package br.com.djiadreams.extras;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.sqlite.SQLiteException;
import android.util.Log;
import br.com.djiadreams.basededados.Infos;
import br.com.djiadreams.basededados.InfosDAO;

import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.PolygonOptions;

public class FabricaDePontos {

	@SuppressWarnings("finally")
	public static List<PolygonOptions> retornaPontos(Context c) {

		List<PolygonOptions> resp = new ArrayList<PolygonOptions>();
		try {
			InfosDAO bd = new InfosDAO(c);
			bd.open();
			List<Infos> lista = bd.listar();
			for (Infos info : lista) {
				resp.add(poligono(info));
			}

			bd.close();
		} catch (SQLiteException e) {
			Log.e("Database",
					"Não foi possivel abrir a base de dados para construir os Pontos");
		} finally {
			return resp;
		}
	}

	private static PolygonOptions poligono(Infos info) {
		PolygonOptions resp = new PolygonOptions();
		resp.add(acimaEsquerda(info), abaixoEsquerda(info),
				abaixoDireita(info), acimaDireita(info));
		resp.fillColor(info.getCor());

		return resp;
	}

	private static LatLng acimaEsquerda(Infos info) {
		LatLng coo = new LatLng(info.getLatitude() + 0.001,
				info.getLongitude() - 0.001);
		return coo;
	}

	private static LatLng abaixoEsquerda(Infos info) {
		LatLng coo = new LatLng(info.getLatitude() - 0.001,
				info.getLongitude() - 0.001);
		return coo;
	}

	private static LatLng acimaDireita(Infos info) {
		LatLng coo = new LatLng(info.getLatitude() + 0.001,
				info.getLongitude() + 0.001);
		return coo;
	}

	private static LatLng abaixoDireita(Infos info) {
		LatLng coo = new LatLng(info.getLatitude() - 0.001,
				info.getLongitude() + 0.001);
		return coo;
	}
}
